草庐IT

javax.annotation : @Nullable vs @CheckForNull

全部标签

javax.net.ssl.SSLException: Received fatal alert: protocol_version解决

今天在开发过程中,调用一个https的接口引发错误在Java1.8上,默认TLS协议是v1.2。在Java1.6和1.7上,默认是已废弃的TLS1.0,由于此项目使用的是jdk1.6,因此引发错误。解决方法1:在发起请求前面设置TLSv1.2协议 System.setProperty("https.protocols","TLSv1.2");解决方法2:在发起请求前忽略ssl认证:工具类:importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjavax.net.s

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

原因:从java8Update31开始,由于SSL协议中的安全漏洞,默认情况下禁用SSLv3协议。排查过程:可使用如下代码,打印http请求协议过程//设置协议-最初未修改policy.security文件时加上这句,无效果,依然报错System.setProperty("https.protocols","TLSv1.2,TLSv1.1,TLSv1.0,SSLv3");//打印请求过程,对比Write和Read协议是否一致,若一致,可能就是因为禁用了某个协议,需继续往下看System.setProperty("javax.net.debug","all");插曲:最初报错异常是javax.n

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: PKIX path validation failed

背景:写的微信推送公众号消息方法,测试的时候没有收到对应的微信公众号推送原因:java.lang.RuntimeException:javax.net.ssl.SSLHandshakeException:PKIXpathvalidationfailed(更多错误信息在后面)分析:查看日志,发现不是自己写的方法有报错,自己写的方法非常顺畅。而是调用微信接口的推送方法时出现的报错。报错翻译为-“validitycheckfailed有效性检查失败”。继续查看发现现在时间为2022-10-16,测试那边的时间为2033-10-16,微信那边判定有问题,于是不显示推送。解决方案:将时间改为现在的时间图

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.setContentLengthLong(J)V

先说原因,其实都是你的jar有问题1.jar冲突2.少依赖了包网上很多说springmvc和springwebmvc,版本高于5.3.0导致的,会有这个问题,那是因为他们没看过源码,高版本的因为在这里,多了一行代码,这里设置的时候,会到实现类里面写一个东西,this.servletResponse.setContentLengthLong(contentLength);因为低版本的没有这行代码,所以不会跑到实现类里去setContentLengthLong所以你降低版本是没有问题的,但是高版本的功能你都用不了了下面我们看下低版本这里的代码是怎么写的,例如我的5.0.13看完的话你就会明白,这个

Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Servlet

Exceptioninthread“main“java.lang.NoClassDefFoundError:javax/servlet/Servlet记录一次Spark提交错误源程序错误原因解决方法特别注意!!!记录一次Spark提交错误源程序importorg.apache.spark.sql.SparkSessionimportscala.io.SourceobjectSparkClear{defmain(args:Array[String]):Unit={valspark=SparkSession.builder().appName("SparkClear").master("local

java: 无法访问org.springframework.web.bind.annotation.RequestMapping

报错:Error:(3,47)java:无法访问org.springframework.web.bind.annotation.RequestMapping原因:可能是jdk1.8与springboot3.0.1版本不匹配,把对应的springboot版本降版本即可。解决:springboot版本改成较低的版本2.7.1,导入,问题解决 

启动springboot项目时报错:​无法访问org.springframework.web.bind.annotation.GetMapping …具有错误的版本 61.0,应为52.0​

报错原因:jdk版本1.8与springboot3.0.1 版本不匹配解决方案:将springboot版本降级即可(比如2.5.4就是稳定版本)。如下图: 注意:修改完成后刷新下maven,如下图。启动成功后,如下图。 由上图可知,启动时携带的端口是8080,contextpath是空,也就是说访问时一个斜杠就可以,在浏览器上访问,如下图。代码如下: 注:这是个最基本的springboot程序。   

Type javax.servlet.http.HttpServletRequest not present

最近在看沉默王二大神的技术教程,搭了个springboot项目,配置swagger的时候,启动总是报错:Typejavax.servlet.http.HttpServletRequestnotpresent。。。。。causedby java.lang.ClassNotFoundException:javax.servlet.http.HttpServletRequest。我的springboot版本是3.0.2,配置的swagger是:io.springfoxspringfox-boot-starter3.0.0最后发现是spring版本太高,将spring版本降为2.7.8即可。

Idea关闭或开启引用提示Usages和Annotations

IDEA的引用提示与Annotation在2022版本的Idea中,新增了引用提示(Usages)和作者(Annotations)的功能。虽然用起来挺好用的,但对电脑还是有一定的压力,在配置比较低的电脑上,打开一个类文件,相关的这些信息要等一会儿才能够显示。这篇文章带大家演示一下如何开关相关的功能,想使用的朋友可以打开(默认),不想使用的朋友可以将其关闭。引用提示Usage引用提示的使用效果,如下图:在类或方法上,我们可以看到该类有几处被使用到了。比如code变量显示为“4usages”,也就是4处被用到了。点击“4usages”可以看到,具体使用它的类和方法,如下图:当然,如果是接口的话,还

org.springframework.web.servlet.DispatcherServlet‘ is not assignable to javax.servlet.Servlet

SpringMVCweb.xml文件配置报错:org.springframework.web.servlet.DispatcherServlet‘isnotassignabletojavax.servlet.Servlet解决方法第一步:先看是否已加载了tomcat,查看自己tomcat版本第二步:打开配置文件第三步:查看配置servlet没有根据自己Tomcat版本的不同选择上下一个配置内容小编的Tomcat版本为8.5,用的就是jakarta.servlet,9版本的应该是javax.servlet10版本用jakarta,自己测试一下结论:成功解决问题